#include<iostream>
using namespace std;
typedef long long LL;
const int N = 3e3 + 10, mod = 1e9 + 7;
int f[N][N];
int d, t, m;
int main()
{
	cin >> d >> t >> m;
	f[0][m] = 1;
	/*for (int i = 1; i <= t; i++) {
		for (int j = 0; j <= m; j++) {
			int x1 = j;
			if (x1 + d > (i - j)) {
				f[i][j] += f[i - 1][j];
				f[i][j] %= mod;
			}
			if (x1 + d > (i - j) && j >= 1) {
				f[i][j] += f[i - 1][j - 1];
				f[i][j] %= mod;
			}
		}
	}*/
	for (int i = 1; i <= t; i++) {
		for (int j = 0; j <= m; j++) {
			int x = d + (m - j) - (i - (m - j));
			if (x <= 0)continue;
			f[i][j] += f[i - 1][j];
			f[i][j] %= mod;
			f[i][j] += f[i - 1][j + 1];
			f[i][j] %= mod;
			//f[i][j] = (f[i - 1][j] + f[i - 1][j + 1]) % mod;
		}
	}
	cout << f[t][0] << endl;
	return 0;
}